import axios from 'axios'
import { getToken } from '@utils'
import { message } from 'antd'
import { createBrowserHistory } from 'history'
const history = createBrowserHistory();
axios.defaults.timeout = 5000

// 增加拦截器
// 请求拦截
let hide = null;
axios.interceptors.request.use(function (config) {
  hide = message.loading('加载中...', 0);
  // 请求头中携带token 
  if(getToken()) {
    config.headers.token = getToken();
  }
  return config;
}, function (error) {
  // Do something with request error
  hide();
  return Promise.reject(error);
});

// 响应拦截
axios.interceptors.response.use(function (res) {
  hide();
  // 判断token是否过期
  const errCode = [401, 403];
  if(errCode.includes(res.data.code)) {
    // token过期了 或者 token 没传
    message.error('token过期或者没有token', 1, ()=>{
      // 跳转到登录页
      // 清除缓存
      localStorage.removeItem('token');
      localStorage.removeItem('userInfo');
      history.push('/login')
      history.go(0)
    })
  }
  return res;
}, function (error) {
  hide();
  return Promise.reject(error);
});

export default axios